
/**单例设计模式-内部类
 * 线程安全，lazy
 *
 * 当 Singleton 类被加载时，静态内部类 SingletonHolder 没有被加载进内存。
 * 只有当调用 getUniqueInstance() 方法从而触发 SingletonHolder.INSTANCE 时
 * SingletonHolder 才会被加载，此时初始化 INSTANCE 实例，并且 JVM 能确保 INSTANCE 只被实例化一次。
 *
 * 这种方式不仅具有延迟初始化的好处，而且由 JVM 提供了对线程安全的支持。
 * @author weiZhiLin
 * @version 1.0
 * @date 2019/12/26 16:23
 */
public class SingletonInner {
    // 通过类的私有构造函数来强调类的不可实例化
    private SingletonInner() {
    }
    private static class SinglengInnerClass{
        private static SingletonInner singletonInner = new SingletonInner();
    }

    // 该方法被调用时才会初始化内部类
    public static SingletonInner getInstance() {
        return SinglengInnerClass.singletonInner;
    }
}
